package com.wans.model.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 分页的响应值
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PaginationResult<T> {
    private List<T> items;       // 当前页数据记录
    private Integer total;         // 总记录数（使用Long可以防止大数据量溢出）
    private Integer pageSize;      // 每页条数（与请求参数一致）
    private Integer currentPage;   // 当前页码（与请求参数一致）
    private Integer totalPages;    // 总页数（计算得出）

    /**
     * 便捷构造方法（自动计算总页数）
     *
     * @param items       当前页数据
     * @param total       总记录数
     * @param pageSize    每页条数
     * @param currentPage 当前页码
     */
    public PaginationResult(List<T> items, Integer total,
                            Integer pageSize, Integer currentPage) {
        this.items = items;
        this.total = total;
        this.pageSize = pageSize;
        this.currentPage = currentPage;
        // 计算总页数（向上取整）
        this.totalPages = (int) Math.ceil((double) total / pageSize);
    }
}
